﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BLL;

public partial class admin_Articles_Details : System.Web.UI.Page
{
  CategoryBLL categoryData = new CategoryBLL();
  ArticleBLL articleData = new ArticleBLL();
  CateGalleryBLL gallerydata = new CateGalleryBLL();
  VideoBLL videoData = new VideoBLL();

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      Session["url_back_admin"] = Request.RawUrl;

      LoadTitle();
      LoadCategory();
      LoadDropGallery();
      LoadDropVideo();
      if (Request.QueryString["Id"] != null)
        Filldata();
      else {
        txtView.Text = "0";
        txtCreadDate.Text = DateTime.Now.ToShortDateString();
      }
    }
  }

  private void LoadDropGallery()
  {
      ListItem itemRoot = new ListItem("Danh mục gốc", "0");
      dropGallery.Items.Insert(0, itemRoot);
      List<CateGallery> listDataSource = gallerydata.GetAll();

      foreach (CateGallery item in listDataSource)
      {
          ListItem obj = new ListItem("--" + item.Name, item.Id.ToString());
          dropGallery.Items.Add(obj);
      }
  }
  private void LoadDropVideo()
  {
      ListItem itemRoot = new ListItem("Danh mục gốc", "0");
      dropVideo.Items.Insert(0, itemRoot);
      List<Video> listDataSource = videoData.GetAll();

      foreach (Video item in listDataSource)
      {
          ListItem obj = new ListItem("--" + item.Name, item.Id.ToString());
          dropVideo.Items.Add(obj);
      }
  }
  private void Filldata()
  {
    int id = Convert.ToInt32(Request.QueryString["Id"]);
    Article article = articleData.GetById(id);
    txtName.Text = article.Title;
    if(article.VideoId.ToString() != null)
        dropVideo.SelectedValue=article.VideoId.ToString();
    if (article.GalleryParentId.ToString() != null)
        dropGallery.SelectedValue = article.GalleryParentId.ToString();
    txtDescription.Text = article.Description;

    fckEditor.Value = HttpUtility.HtmlDecode(article.Content);

    txtView.Text = article.View.ToString();
    txtCreadDate.Text = article.CreateDate.ToShortDateString();

    dropParent.SelectedValue = article.CategoryId.ToString();
    if (article.isEnable == true) radioEnable.Checked = true;
    else radioVisible.Checked = true;   
  }
  private void ShowChild(int parentId, string space)
  {
    List<Category> listDataSource = categoryData.GetByParent(parentId);

    foreach (Category item in listDataSource)
    {
      ListItem obj = new ListItem(space + item.Name, item.Id.ToString());
      dropParent.Items.Add(obj);

      ShowChild(item.Id, space + "- - - ");
    }
  }
  private void LoadCategory()
  {
    dropParent.Items.Clear();
    ShowChild(0, " - - ");
    ListItem itemRoot = new ListItem("Danh mục gốc", "0");
    dropParent.Items.Insert(0, itemRoot);
  }
  private void LoadTitle()
  {
    if (Request.QueryString["Id"] != null)
    {
      h3Title.InnerText = "Chỉnh sửa bài viết";
    }
  }
  private bool isValidate()
  {
    if (txtName.Text == "")
    {
      Myfunction.ThongBao(lbThongBao, "Tiêu đề bài viết không được để trống !");
      txtName.Focus();
      return false;
    }
    if (dropParent.SelectedIndex == 0)
    {
      Myfunction.ThongBao(lbThongBao, "Chọn danh mục !");
      return false;
    }
    int view;
    if (!int.TryParse(txtView.Text, out view))
    {
      Myfunction.ThongBao(lbThongBao, "Số lượt xem không hợp lệ");
      txtView.Focus();
      return false;
    }
    DateTime date;
    if (!DateTime.TryParse(txtCreadDate.Text, out date))
    {
      Myfunction.ThongBao(lbThongBao, "Ngày tháng phải nhập theo định dạng (Tháng/Ngày/Năm)");
      txtCreadDate.Focus();
      return false;
    }
    return true;
  }
  private void ResetForm()
  {
    txtName.Text = "";
    txtDescription.Text = "";
    fckEditor.Value = "";
    radioEnable.Checked = true;
  }
  private void Update()
  {
    int id = Convert.ToInt32(Request.QueryString["Id"]);
    Article article = articleData.GetById(id);
    if (dropGallery.SelectedValue.ToString()!="0")
        article.GalleryParentId = Convert.ToInt32(dropGallery.SelectedValue);
    if (dropVideo.SelectedValue.ToString() != "0")
        article.VideoId = Convert.ToInt32(dropVideo.SelectedValue);
    article.CategoryId = Convert.ToInt32(dropParent.SelectedValue);
    article.Title = txtName.Text;

    article.Description = Myfunction.RemoveHTMLTags(txtDescription.Text);

    article.Content = HttpUtility.HtmlEncode(fckEditor.Value);

    article.isEnable = (radioEnable.Checked ? true : false);
    article.CreateDate = DateTime.Now;
    article.View = Convert.ToInt32(txtView.Text);
    
    if (fileUpload.HasFile)
    {
        if (article.Image == null || article.Image == "")
            article.Image = Myfunction.CopyFile(fileUpload.PostedFile, "Images/Article", article.Title);
        else
            article.Image = Myfunction.UpdateFile(fileUpload.PostedFile, "Images/Article", article.Image, article.Title);
    }
    articleData.Update(article);

    Myfunction.ThongBao(lbThongBao, "Bài viết đã được cập nhật");
  }
  private void Add()
  {
    Article article = new Article();

    article.CategoryId =  Convert.ToInt32(dropParent.SelectedValue);
    if (dropGallery.SelectedValue.ToString() != "0")
        article.GalleryParentId = Convert.ToInt32(dropGallery.SelectedValue);
    if (dropVideo.SelectedValue.ToString() != "0")
        article.VideoId = Convert.ToInt32(dropVideo.SelectedValue);
    article.Title = txtName.Text;

    article.Description = Myfunction.RemoveHTMLTags(txtDescription.Text);

    article.Content = HttpUtility.HtmlEncode(fckEditor.Value);

    article.CreateDate = DateTime.Now;
    article.isEnable = (radioEnable.Checked ? true : false);
    article.View = Convert.ToInt32(txtView.Text);

    if (fileUpload.HasFile)
    {
        article.Image = Myfunction.CopyFile(fileUpload.PostedFile, "Images/Article", article.Title);
    }
    articleData.Add(article);
    Myfunction.ThongBao(lbThongBao, "Bài viết đã được cập nhật !");
  }
  protected void btnOk_Click(object sender, EventArgs e)
  {
    if ((int)Session["Role"] != 1)
    {
      Myfunction.ThongBao(lbThongBao, "Bạn không có quyền thực hiện thao tác này ! ");
      return;
    }
    try
    {
      lbThongBao.Text = "";
      if (isValidate())
      {
        if (Request.QueryString["Id"] == null)
        {
          Add();
          ResetForm();
        }
        else
          Update();

      }
    }
    catch (Exception ex)
    {
        Myfunction.ThongBao(lbThongBao, ex.Message);
    }
  }
}